import type { DescriptionsProps } from 'antd'; import { type LoaderFunctionArgs, useLoaderData } from 'react-router-dom'; import LookForward from '@/components/LookForward'; import { fetchGetUserList } from '@/service/api'; type Item = T extends any[] ? T[number] : T; type ValuesOf = T[keyof T]; type Values = ValuesOf; function transformDataToItem( tuple: [T, U] ): NonNullable> { return { children: tuple[1], key: tuple[0], label: tuple[0] }; } // 这个页面仅仅是为了展示 react-router-dom 的 loader 的强大能力,数据是随机的对不上很正常 // This page is solely for demonstrating the powerful capabilities of react-router-dom's loader. The data is random and may not match. const Component = () => { const data = useLoaderData() as Api.SystemManage.User | undefined; const { t } = useTranslation(); if (!data) return ; const items = Object.entries(data).map(transformDataToItem); return (
{t('page.manage.userDetail.explain')}
{t('page.manage.userDetail.content')}
); }; export async function loader({ params }: LoaderFunctionArgs) { const { data, error } = await fetchGetUserList(); if (error) return null; const info = data.records.find(item => String(item.id) === params.id); return info; } export default Component;